package com.sharding.shardingdemo.utils;

/**
 * 公共的返回码
 */
public enum ResultCode {
    /**
     * 系统错误返回码
     */
    SUCCESS(true,10000,"操作成功"),
    FAIL(false,10001,"操作失败"),
    FLOW_LIMIT(false,11000,"请求速度过快，请勿频发发送请求。"),
    LOGIN_FAIL(false,100013,"登录失败"),
    PassWORD_FAIL(false,100013,"原密码错误"),
    LOGIN_GESTURE_FAIL(false,100013,"登录失败,手势密码错误"),
    SERVER_ERROR(false,10002,"系统出现错误"),
    CLIENT_ERROR(false,10002,"服务链接失败"),
    SizeTooLong(false,10002,"上传的数据不要超过25M"),
    NO_HANDLER_FOUND(false, 10003, "路径不存在，请检查路径是否正确"),
    RUNTIME_ERROR(false, 10008, "系统开小差了，请稍后重试"),
    AREA_ERROR(false, 10008, "请先删除子区域"),
    CAPITAL_EXIST(false, 10008, "当前区域下绑定有生产设备，请先删除当前区域下的生产设备"),
    DEV_EXIST(false, 10008, "当前区域下绑定有采集设备，请先删除当前区域下的采集设备"),
    IOT_CAPITAL_EXIST(false, 10008, "当前设备已绑定采集器，请先删除绑定采集器"),
    CHILDMODELEXIT(false, 10008, "请先删除子节点"),
    /**
     * 权限操作返回码 2XXXX
     */
    AREAUNAUTHORISE(false,10003,"您没有权限创建该区域的企业"),
    UNAUTHENTICATED(false,10009,"您还未登录，请先登录"),
    UNAUTHORISE(false,10003,"没有权限，请联系管理员授权"),

    KAPTCHA_ERROR(false,10004,"验证码不正确"),
    USERNAME_ERROR(false,10004,"当前企业已存在此人，请勿重复注册"),
    USER_ERROR(false,10004,"查无此人"),
    USER_ONE_NOT(false,10004,"多人存在相同的电话号码，请联系管理员处理"),
    KAPTCHA_TOO_LATE(false,10004,"验证码已过期"),
    UNAUTHOR(false,10008,"您的账号已被冻结，请联系管理员"),
    /**
     * 用户操作返回码 3XXXX
     */
    MOBILE_OR_PASSWORD_ERROR(false,20001,"用户名或密码错误"),
    UPLOAD_SUCCESS(true,1000048,"成功"),
    TIMETOO(false,10003,"请求次数过多，请稍后再试"),
    REPEAT_REG(false,10003,"不可重复注册"),


    /**
     * 数据库操作返回码  4XXXX
     */
    DUPLICATE_KEY_EXCEPTION(false, 40001, "已存在该记录"),
    SQL_EXECUTE_ERROR(false, 40002, "服务发生错误，保存失败"),
    SQL_NULL_ERROR(false, 40002, "新增记录不能为空"),
    COMPANYNAME_ERROR(false, 40008, "已存在相同的公司名称"),
    COMPANYCODE_ERROR(false, 40008, "社会信用代码已存在"),
    USERRESPONSIBLE(false, 40009, "已存在相同负责模块的用户"),

    /**
     *
     */
    COLLECTOR_ID_ERROR(false, 50001, "采集器id错误"),
    COLLECTOR_COMPANY_ERROR(false, 50002, "推送数据的采集器ID企业不匹配"),
    COLLECTOR_TYPE_ERROR(false, 50003, "推送数据的采集器ID和录入的采集器类别不匹配"),
    COLLECTOR_DATA_ALL_ZERO(false, 50004, "所有数据全部为零"),
    COLLECTOR_GATEWAY_ERROR(false, 50005, "非虚拟网关不能推送数据"),

    /**
     * 其他操作返回码 8XXXX
     */
    ID_ERROR(false, 80001, "ID错误"),


    PARAMETER_INVALID(false, 80002, "参数不合法"),
    RELATION_EXIT(false, 80002, "当前设备已在能源结构中绑定，请先删除绑定"),
    BELT_EXIT(false, 80002, "当前设备已在产线中绑定，请先删除绑定"),
    UPDATING_INVALID(false, 80002, "服务器升级中...请稍后"),
    INSERT_EXIT_OF_YEAR(false, 80002, "当前年份已存在数据，请删除重新添加"),
    INSERT_EXIT_OF_MONTH(false, 80002, "当前月份已存在数据，请删除重新添加"),
    YOlAI(false, 80002, "当前产品已关联设备产能信息，不能删除"),
    PARAMETER_INVAL(false, 80002, "携带正确的ID"),


    REQUEST_METHOD_ERROR(false,800005,"请求方法错误"),

    /*****************************************************************************权限类 start code从900001开始累计 ********************************************************************************/

    FILE_ENPUT(false,99991 ,"上传文件不能为空"),

    FILE_DEL(false,99992 ,"文件地址不能为空"),

    MENU_DELET_ERROT(false,900001,"请先删除子菜单或按钮"),

    MENU_DELETBASIC_ERROT(false,900002,"系统菜单不能删除"),

    USER_DELETE_OUT_ERROR(false,900003,"系统管理员不能删除"),

    USER_DELETE_SELF_ERROR(false,900003,"系统管理员不能删除"),
    USER_NAME_ALREADY_ERROR(false,900003,"用户名已存在"),

    ROLE_DELETE_SELF_ERROR(false,900004,"系统角色不能删除"),
    ROLE_UPDATE_SELF_ERROR(false,900005,"系统角色不能修改"),
    ROLE_ROBACK_ERROR(false,900005,"非系统角色不能还原"),
    COMPANY_ALREADY_EXISTS(false, 900006, "企业已经注册，请申请加入该企业。"),
    COMPANY_NAME_CREDITCODE_NOMATCH(false, 900007, "企业名字和社会信用代码不匹配。请检查。"),
    DELETE_TRANSIONAL_ERROR(false, 900007, "该户号已绑定物联网设备，禁止删除"),
    USERNAME_ALREADY_EXISTS(false, 900007, "手机号已存在。")
    /*****************************************************************************权限类 end********************************************************************************/
    ;



    /**
     * 操作是否成功
     */
    boolean success;

    /**
     * 操作代码
     */
    int code;

    /**
     * 提示信息
     */
    String message;

    ResultCode(boolean success, int code, String message){
        this.success = success;
        this.code = code;
        this.message = message;
    }

    public boolean success() {
        return success;
    }

    public int code() {
        return code;
    }

    public String message() {
        return message;
    }

}
